package cn.zqy.demo.baseDay;/*
*   1.将 取值范围小的类型 自动提升为 取值范围大的类型 。
*   2.范围小的类型向范围大的类型提升， byte、short、char 运算时直接提升为 int
* */

public class Demo03DataType {
    public static void main(String[] args) {
        // 隐式类型转换
        short num1 = 90;
        int num2 = num1;
        System.out.println(num2);  // 90

        byte num3 = 23;
        short num4 = 909;
        int num5 = num3 + num4;
        System.out.println(num5); //932

        int i = 1;
        double d = 2.5;
        //int类型和double类型运算，结果是double类型
        //int类型会提升为double类型
        double e = d+i;
        System.out.println(e);  // 3.5


        // 强制转换
        // int num6 = 1.5; // 这样想写报错，从double转换到int可能会有损失
        // int 强制转成 short 砍掉2个字节，可能造成数据丢失。
        short num6 = (short) 77777;
        System.out.println(num6); //

        short s = 1;
        s = (short) (s+1);
        System.out.println(s);  //2

        System.out.println("===================");
        myMethod();
        operater();


        System.out.println("===================");
        // += 是一个运算符，只运算一次，并带有强制转换的特点
        // s += 1 就是 s = (short)(s + 1)
        short dd = 1;
        dd+=1;
        // dd = dd + 1;    从int转换到short可能会有损失
        System.out.println(dd);


        System.out.println("===================");
        byte b1=1;
        byte b2=2;
        short b3=1 + 2;
        System.out.println(b3);

        int numz  = 9000 + 90000;
        System.out.println(numz);

    }

    public static void myMethod() {
        System.out.println("自己定义的方法，需要被main调用运行");
    }

    public static void operater() {
        int i = 0;
        i = (i == 2 ? 78 : 900);
        System.out.println(i);
        int j = 0;
        j = (3<=4 ? 500:600);
        System.out.println(j);
    }
}